diff -Nur mplayer-old/libmpcodecs/dec_audio.c mplayer/libmpcodecs/dec_audio.c
--- mplayer-old/libmpcodecs/dec_audio.c	2010-05-27 19:02:33.346258636 +0300
+++ mplayer/libmpcodecs/dec_audio.c	2010-05-27 19:02:41.915422106 +0300
@@ -20,6 +20,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <assert.h>
+#include <locale.h>
 
 #include "config.h"
 #include "mp_msg.h"
@@ -143,6 +144,9 @@
 static int init_audio(sh_audio_t *sh_audio, char *codecname, char *afm,
 		      int status, stringset_t *selected)
 {
+    char *locale_data = setlocale(LC_CTYPE, "");
+    setlocale(LC_CTYPE, "C");
+
     unsigned int orig_fourcc = sh_audio->wf ? sh_audio->wf->wFormatTag : 0;
     int force = 0;
     if (codecname && codecname[0] == '+') {
@@ -231,8 +235,10 @@
 	    continue;		// try next...
 	}
 	// Yeah! We got it!
+    setlocale(LC_CTYPE, locale_data);
 	return 1;
     }
+    setlocale(LC_CTYPE, locale_data);
     return 0;
 }
 
diff -Nur mplayer-old/libmpcodecs/dec_video.c mplayer/libmpcodecs/dec_video.c
--- mplayer-old/libmpcodecs/dec_video.c	2010-05-27 19:02:33.342258404 +0300
+++ mplayer/libmpcodecs/dec_video.c	2010-05-27 19:04:23.349261664 +0300
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <locale.h>
 
 #include "mp_msg.h"
 #include "help_mp.h"
@@ -204,6 +205,10 @@
 static int init_video(sh_video_t *sh_video, char *codecname, char *vfm,
                       int status, stringset_t *selected)
 {
+
+    char *locale_data = setlocale(LC_CTYPE, "");
+    setlocale(LC_CTYPE, "C");
+
     int force = 0;
     unsigned int orig_fourcc =
         sh_video->bih ? sh_video->bih->biCompression : 0;
@@ -320,8 +325,10 @@
         }
         // Yeah! We got it!
         sh_video->initialized = 1;
+        setlocale(LC_CTYPE, locale_data);
         return 1;
     }
+    setlocale(LC_CTYPE, locale_data);
     return 0;
 }
 
